/**
 *
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃神兽保佑
 * 　　　　┃　　　┃代码无BUG！
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━神兽出没━━━━━━coder-zhouxiongwei
 */
/**
 * Created by zhouxiongwei on 2019.04.03
 */

require('../util/bootloader');
require('../util/common');
var express = require('express');
var router = express.Router();

var usersDao = require('../dao/users');
var usersRouters = module.exports;

//用户登录
usersRouters.login = function (req, res) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "content-type");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    
    var par = paramAll(req);

    if (!par.time) {
        return res.json(new ERR('时间戳不为空!', 400));
    }
    if (!par.user_id) {
        return res.json(new ERR('请输入手机号!', 400));
    }
    if (!par.password) {
        return res.json(new ERR('请输入密码!', 400));
    }
    if (!par.sign) {
        return res.json(new ERR('签名不为空!', 400));
    }

    usersDao.login(par, function(err1, data1){
        if(err1){
            return res.json(new ERR(err1, 410));
        }else{
            if(data1.status == 200){
                console.log(data1);
                return res.json(new PKG(data1));
            }else if(data1.status == 201){
                return res.json(new ERR(data1, 420));
            }
        }
    });
}
router.post('/login', usersRouters.login);
router.options('/login', usersRouters.login);

//用户修改密码
usersRouters.modify_pass = function (req, res) {
    var par = paramAll(req);

    if (!par.type) {
        return res.json(new ERR('请选择类别!', 400));
    }
    if (!par.account) {
        return res.json(new ERR('请输入手机号!', 400));
    }
    if (!par.password) {
        return res.json(new ERR('请输入密码!', 400));
    }
    if(!par.new_pass){
        return res.json(new ERR('请输入新密码', 400));
    }

    usersDao.check_login(par, function(err, data){
        if(data.status == 200){
            usersDao.modify_pass(par, function(err1, data1){
                if(data1.status == 200){
                    return res.json(new PKG(data1));
                }else if(data1.status == 201){
                    return res.json(new ERR(data1));
                }
            });
        }else if(data.status == 201){
            return res.json(new ERR(data));
        }
    });
}
router.post('/modify_pass', usersRouters.modify_pass);

//登录成功，在个人中心显示个人信息
usersRouters.login_user_info = function (req, res) {
    var par = paramAll(req);

    if (!par.account) {
        return res.json(new ERR('请输入手机号!', 400));
    }

    usersDao.login_user_info(par, function(err, data){
        if(par.status == 200){
            return res.json(new PKG(data));
        }else if(par.status == 201){
            return res.json(new ERR(data));
        }
    });
}
router.post('/login_user_info', usersRouters.login_user_info);

//转积分操作
usersRouters.transfer = function (req, res) {
    var par = paramAll(req);

    if (!par.my_phone) {
        return res.json(new ERR('请输入本人手机号!', 400));
    }
    if (!par.transfer_phone) {
        return res.json(new ERR('请输入转账手机号!', 400));
    }
    if (par.transfer_phone == par.my_phone) {
        return res.json(new ERR('无法给自己转账!', 400));
    }
    if (!par.score || par.score<0) {
        return res.json(new ERR('请输入转账积分!', 400));
    }

    usersDao.check_transfer_exist(par, function(err, data){
        if(data.status == 200){
            //判断积分是否充足
            usersDao.check_score_enough(par, function(err, data){
                if(data.status == 200){
                    usersDao.del_score_transfer(par, function(err, data){
                        if(data.status == 200){
                            usersDao.add_score_transfer(par, function(err, data){
                                //保存转账记录
                                var log = {
                                    my_phone: par.my_phone,
                                    transfer_phone: par.transfer_phone,
                                    transfer_date: new Date(),
                                    score: par.score,
                                    status: 1
                                }

                                usersDao.save_transfer_log(log, function(err, data){
                                    if(data.status == 200){
                                        return res.json(new PKG(data));
                                    }else if(data.status == 201){
                                        return res.json(new ERR(data, 420));
                                    }
                                });
                            });
                            
                        }else if(data.status == 201){
                            return res.json(new ERR(data, 420));
                        }
                    });
                    
                }else if(data.status == 201){
                    return res.json(new ERR(data, 420));
                }
            });
        }else if(data.status == 201){
            return res.json(new ERR(data, 420));
        }
    });
}
router.post('/transfer', usersRouters.transfer);

module.exports = router;